لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
حرفه ای ها سلام . امروز در زمینه آموزش برنامه نویسی VBA در اکسل می خواهیم به سراغ لیست باکس در VBA برویم .
لیست باکس در vba یک ابزار خیلی مهم و کاربردی در برنامه نویسی وی بی ای است .
نمی دانم که تا به حال چقدر از یک List Box در vba استفاده کرده اید یا اصلا با قابلیت ها و کارهایی که یک لیست باکس می تواند برایتان انجام بدهد آشنا هستید یا نه ؟
به هر حال اگر علاقمند به این هستید که چطور می شود یک لیست باکس در vba را ایجاد کرد ؟
چطور می شود به یک لیست باکس مقدار داد ؟
چطور می شود اطلاعات موجود در داخل یک لیست باکس را استخراج کرد و مثلا آنها را در داخل سلول های اکسل ذخیره کرد ؟
چطور می شود اطلاعات یک لیست باکس را حذف کرد ؟
و البته در کنار همه این سوالها اگر دوست دارید کلی تکنیک و ترفندهای دیگر که در مورد لیست باکس ها وجود دارد را یاد بگیرید پس به شما اطمینان می دهم که مطالعه این مطلب بهترین انتخابی است که می توانید داشته باشید .
من علیرضا شهرآئینی هستم و سعی می کنم همه آن چیزی که در مورد کار با لیست باکس ها به آن احتیاج دارید را به ساده ترین شکل ممکن به شما آموزش بدهم .
راستی یادتان باشد که اینجا سافت پلاس است و توی سافت پلاس این سادگی در آموزش است که حرف اول را می زند .
پس با من همراه باشید .
فهرست محتوا
لیست باکس در VBA چی هست ؟ چه کاربردی دارد ؟
همان طور که از اسم لیست List Box هم مشخص است ؛ یک لیست باکس در واقع یک باکس یا یک کادری است که می شود در داخل آن یک لیست از اطلاعات مورد نظر خودمان را به کاربر نمایش بدهیم .
در کنار نمایش اطلاعات کاربر این امکان را دارد که از داخل لیست اطلاعات ما یک یا چند تا مورد را انتخاب کند و بعد تصمیم می گیریم که بر مبنای انتخاب کاربر برنامه ما چه عکس العملی از خودش نمایش بدهد .
آیا لیست باکس با کمبو باکس فرق می کند ؟
از لحاط عملکرد شباهت خیلی زیادی بین هر دو تای اینها وجود دارد . چون با کمک هر کدام از آنها می شود یک لیست از اطلاعات را به کاربر نمایش داد .
اما شاید این تنها وجه اشتراک بین این دو تا باشد .
در کنار این شباهت چند تا تفاوت هم بین آنها وجود دارد که اینجا به آنها اشاره می کنم .
1- اولین تفاوت مربوط به این این است که معمولا یک کمبو باکس بصورت یک لیست جمع شده است و تا وقتی روی آن کلیک نکنیم اطلاعاتش را به کاربر نمایش نمی دهد .
اما لیست باکس برعکس همیشه اطلاعاتش را در معرض نمایش قرار می دهد .
خود این تفاوت در شکل و ظاهر باعث می شود که یک کمبو باکس همیشه فضای کمتری را به نسبت یک لیست باکس اشغال کند .
2- تفاوت دوم مربوط به این می شود که ما توی یک لیست باکس می توانیم به صورت همزمان چند تا آیتم را انتخاب کنیم اما در کمبوباکس چنین امکانی برای ما وجود ندارد .
یک پیشنهاد خواندنی در زمنیه برنامه نویسی اکسس: چطور زبان ورد اطلاعات در اکسس را کنترل کنیم ؟
چه جوری یک لیست باکس را ایجاد کنیم ؟
برای ایجاد یک لیست باکس در vba اول باید یک فرم را برای خودمان ایجاد کنیم .
بعد از اینکه فرم را ایجاد کردیم می توانیم لیست باکس مورد نظر را بر روی فرم خودمان قرار بدهیم .
برای این کار می توانید از تصویر زیر کمک بگیرید . در مورد نحوه ایجاد فرم هم توی ویدئو همین صفحه آموزش کاملی را داده ام .
تا به اینجا ما یاد گرفتیم که یک لیست باکس را برای خودمان ایجاد و آن را روی فرم قرار بدهیم . در ادامه باید یاد بگیریم که چطور می شود از این لیست باکس استفاده کرد ؟
چه جوری به لیست باکس اطلاعات بدهیم ؟
اولین قدم در کار با لیست باکس ها این است که باید یاد بگیریم که چه طوری می شود اطلاعات مورد نظر خودمان را در داخل آنها وارد کنیم .
برای این کار سه تا راه حل وجود دارد که در ادامه راجع به هر سه تای آنها با هم صحبت می کنیم .
روش اول : استفاده از ویژگی List
با استفاده از این ویژگی می شود اطلاعاتی را که در قالب یک محدوده هستند را بصورت یک آرایه در بیاوریم و بعد آن آرایه را در داخل لیست باکس خودمان اضافه کنیم .
برای این کار باید از کد نویسی وی بی ای استفاده کنیم .
مثلا به کدهای زیر نگاه کنید .
ListBox1.List = Array("شنبه", "یک شنبه", "دوشنبه")
اینجا من با استفاده از دستور Array سه تا از روزهای هفته را در قالب یک آرایه تعریف کرده ام و همین آرایه را در اختیار لیست باکس خودم قرار داده ام تا اطلاعاتش را برای من نمایش بدهد .
راستی اگر دوست دارید در مورد آرایه ها بیشتر بدانید به شما پیشنهاد می کنم که مطلب آشنایی با مفهوم آرایه ها در برنامه نویسی وی بی ای را حتما مطالعه کنید .
روش دوم: استفاده از ویژگی Row Source
ساده ترین روش برای اینکه بتوانیم اطلاعات مورد نظرمان را در اختیار لیست باکس قرار بدهیم این است که بیاییم از خاصیت Row Source آن استفاده کنیم .
حالا برای اینکه بخواهیم این خاصیت را مقدار دهی کنیم دو تا راه داریم .
راه اول این است که از کادر Property استفاده کنیم . مثلا به تصویر زیر نگاه کنید .
در تصویر بالا من از اکسل خواسته ام که محدوده اطلاعات موجود در سلول های A1 تا A8 را در قالب یک لیست باکس برای من نمایش بدهد .
اینجا به روش دستی خاصیت Row Source را مقدار دهی کردیم اما از همین خاصیت به صورت کد نویسی هم می شود استفاده کرد .
مثلا اگر بخواهیم همان محدوده بالا را به صورت کد نویسی تعریف کنیم می توانیم از کدی مثل کد زیر استفاده کنیم .
ListBox1.RowSource = "Sheet1!A1:A5"
روش سوم: استفاده از ویژگی AddItem
از این روش باید در محیط کد نویسی وی بی ای استفاده کرد تا به کمک آن بشود یک لیست باکس در VBA را مقدار دهی کرد . برای این کار می شود از کدهایی مثل کد زیر استفاده کرد .
With Me.ListBox1
.AddItem "شنبه"
.AddItem "يک شنبه"
.AddItem "دوشنبه"
.AddItem "سه شنبه "
.AddItem "چهار شنبه"
.AddItem "پنج شنبه"
End With
با استفاده از این کدها ما می توانیم یک لیست باکس را مقدار دهی کنیم .
ترتیب نمایش اطلاعات در داخل لیست باکس به همان ترتیبی است که در محیط کد نویسی آنها را می نویسیم . البته یک ترفندی وجود دارد که با استفاده از آن دیگر نیاز نیست که این ترتیب را رعایت کنیم .
در مورد این تکنیک در ویدئوی این بخش بیشتر صحبت می کنم .
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
در این آموزش راجع به خطایی به اسم Run time error 1004 در برنامه نویسی وی بی ای با هم صحبت می کنیم .
چطور با کدهای VBA اطلاعات را از اکسس به ورد بفرستیم؟
کلمه کلیدی set و کاربردهای آن در برنامه نویسی VBA
به کمک VBA بر رنگها در اکسل حکومت کنید .
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
مثل همیشه عالی . ممنون از شما که سادگی توی آموزش رو شعار خودتون قرار دادید و چقدر هم خوب و ساده این مفاهیم را دارید آموزش می دید .
مرسی از شما
سلام میشه لیست باکس ها رو به هم مرتبط کرد تا اطلاعات یکی بر اساس دیگری فیلتر بشه
بله این کار شدنی است . توی آموزش های بعدی راجع بهش صحبت می کنیم
سلام.میشه لیست باکسها رو راست چین کرد؟
سلام ممنون از توضیحات خوبتون.
سوال بنده اینه که چطوری میشه ستونهای لیست باکس رو از راست به چپ چید؟ مثلا من نام و کد ملی و موبایل رو در شیت اکسل خودم به همین ترتیب نوشتم ولی در لیست باکس از چپ به راست نام ،کد ملی و موبایل رو می نویسه
سلام
برای چیدمان و امایش اطلاعات در داخل لیست باکس از کدهایی مثل کد زیر باید استفاده کنید .
مثلا این کد : ListboxName.TextAlign=3 اطلاعات را از سمت راست نمایش می دهد